#ifndef RANDOM_HPP
#define RANDOM_HPP

#include <stdint.h>
#include <cstddef>

class SystemRandom
{
public:
    SystemRandom();
    ~SystemRandom();
    size_t operator ()(size_t);
    size_t operator()();
private:
    intptr_t pd;
};

class Mt19937Random{
public:
    Mt19937Random(unsigned seed);
    ~Mt19937Random();
    unsigned operator()(unsigned);
    unsigned operator ()();
private:
    void *engine;
};

#endif // RANDOM_HPP
